home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Arsenal / OS2 Arsenal v1.0 (Disc 1)(Arsenal Computer).ISO / os2_drvr / wdc24t.dsk / FIX_OS2_T3400.PMI < prev    next >
Text File  |  1994-05-05  |  45KB  |  1,857 lines

  1. /*
  2.  *    OS/2 2.1 SVGA PMI-File Generator
  3.  */
  4.  
  5. [AdapterType]
  6.         WESTERNDIGITAL
  7.  
  8. [ChipSet]
  9.         WD90C24
  10.  
  11. /*
  12.  *    Lock Extended Registers
  13.  */
  14.  
  15. /*
  16.  *    This section locks adapter and chip
  17.  *    AS MUCH as BIOS does and NOT MORE!
  18.  *    In other words, it restores the NORMAL lock state.
  19.  */
  20.  
  21. [Lock]
  22. outb(0x3c4, 0x35);
  23. outb(0x3c5, 0x00);
  24. outb(0x3c4, 0x06);
  25. outb(0x3c5, 0x0f);
  26. outb(0x3b4, 0x35);
  27. outb(0x3b5, 0xff);
  28. outb(0x3d4, 0x35);
  29. outb(0x3d5, 0x00);
  30. outb(0x3b4, 0x29);
  31. outb(0x3b5, 0xff);
  32. outb(0x3d4, 0x29);
  33. outb(0x3d5, 0x00);
  34. outb(0x3ce, 0x0f);
  35. outb(0x3cf, 0x00);
  36.  
  37. /*
  38.  *    Unlock Extended Registers
  39.  */
  40.  
  41. [UnLock]
  42. outb(0x3ce, 0x0f);
  43. outb(0x3cf, 0x05);
  44. outb(0x3d4, 0x29);
  45. outb(0x3d5, 0xa5);
  46. outb(0x3b4, 0x29);
  47. outb(0x3b5, 0xa5);
  48. outb(0x3d4, 0x35);
  49. outb(0x3d5, 0x30);
  50. outb(0x3b4, 0x35);
  51. outb(0x3b5, 0x30);
  52. outb(0x3c4, 0x06);
  53. outb(0x3c5, 0x48);
  54. outb(0x3c4, 0x35);
  55. outb(0x3c5, 0x50);
  56.  
  57. [Cleanup]
  58.  
  59. rmwb(0x3ce, 0x3cf, 0x0c, 0xe7, 0x00);
  60. rmwb(0x3ce, 0x3cf, 0x0e, 0x60, 0x00);
  61. rmwb(0x3ce, 0x3cf, 0x09, 0x00, 0x00);
  62. rmwb(0x3d4, 0x3d5, 0x2d, 0x00, 0x00);
  63. rmwb(0x3d4, 0x3d5, 0x2e, 0x00, 0x00);
  64. rmwb(0x3d4, 0x3d5, 0x2f, 0x00, 0x42);
  65. rmwb(0x3ce, 0x3cf, 0x0b, 0x00, 0xc5);
  66. rmwb(0x3d4, 0x3d5, 0x34, 0x1f, 0xa0);
  67. rmwb(0x3c4, 0x3c5, 0x31, 0x00, 0x0c);
  68.  
  69. [comment]
  70.     Text Mode: 40 cols, 25 rows.
  71.  
  72. [ModeInfo]
  73.         ModeAttributes   = 0x08
  74.         BytesPerScanLine = 40
  75.         XResolution      = 360
  76.         YResolution      = 400
  77.         XCharSize        = 9
  78.         YCharSize        = 16
  79.         TextRows         = 25
  80.         BitsPerPixel     = 4
  81.         NumberOfPlanes   = 1
  82.         PageLength       = 4000
  83.         SaveSize         = 4000
  84.         TotalMemory      = 1048576
  85.         InterlaceMode    = 0
  86.         BufferAddress    = 0x0b8000
  87.  
  88. [TrapRegs]
  89.     0x3c2;
  90.     0x3c4, 0x00-0x04, 0x06-0x09, 0x10-0x12, 0x20-0x29, 0x31-0x36;
  91.     0x3c5;
  92.     0x3d4, 0x00-0x18, 0x29-0x2f, 0x31-0x33, 0x35-0x3a, 0x3c-0x3c, 0x3e-0x3e;
  93.     0x3d5;
  94.     0x3c0, 0x00-0x13;
  95.     0x3c1;
  96.     0x3ce, 0x00-0x13, 0x15-0x16;
  97.     0x3cf;
  98.     0x23c0;
  99.     0x23c2;
  100.     0x23c8;
  101.     0x23ca;
  102.     0x23cc;
  103.     0x3b4;
  104.     0x3b5;
  105.  
  106. [SetMode]
  107.  
  108. /*
  109.  *    Set Miscellaneous Output Register
  110.  */
  111.  
  112. outb(0x3c2, 0x63);
  113.  
  114.  
  115. /*
  116.  *    Set Sequencer Registers
  117.  */
  118.  
  119. r0   = 0x00; r1   = 0x08; r2   = 0x03; r3   = 0x00; r4   = 0x02;
  120. boutb(5, 0x00, 0x3c4, 0x3c5);
  121.  
  122. outw(0x3c4, 0x0300);
  123. r7   = 0x09; r8   = 0x00; r9   = 0x00; 
  124. boutb(3, 0x07, 0x3c4, 0x3c5);
  125.  
  126. rmwb(0x3c4, 0x3c5, 0x10, 0x20, 0xc1);
  127. r17  = 0x65; r18  = 0x00; 
  128. boutb(2, 0x11, 0x3c4, 0x3c5);
  129.  
  130. r32  = 0x00; 
  131. boutb(1, 0x20, 0x3c4, 0x3c5);
  132.  
  133. rmwb(0x3c4, 0x3c5, 0x21, 0x07, 0x00);
  134. r34  = 0x00; r35  = 0x00; r36  = 0xa0; r37  = 0x00; r38  = 0x00;
  135. r39  = 0x00; r40  = 0x00; 
  136. boutb(7, 0x22, 0x3c4, 0x3c5);
  137.  
  138. rmwb(0x3c4, 0x3c5, 0x29, 0x04, 0x00);
  139. rmwb(0x3c4, 0x3c5, 0x31, 0x00, 0x0c);
  140. rmwb(0x3c4, 0x3c5, 0x32, 0xff, 0x00);
  141. r51  = 0x00; r52  = 0x00; 
  142. boutb(2, 0x33, 0x3c4, 0x3c5);
  143.  
  144. r54  = 0x00; 
  145. boutb(1, 0x36, 0x3c4, 0x3c5);
  146.  
  147. /*
  148.  *    Set CRT Registers
  149.  */
  150.  
  151. outw(0x3d4, 0x0e11);
  152. r0   = 0x2d; r1   = 0x27; r2   = 0x28; r3   = 0x90; r4   = 0x2b;
  153. r5   = 0xa0; r6   = 0xbf; r7   = 0x1f; r8   = 0x00; r9   = 0x4f;
  154. r10  = 0x0d; r11  = 0x0e; r12  = 0x00; r13  = 0x00; r14  = 0x00;
  155. r15  = 0x00; r16  = 0x9c; r17  = 0x8e; r18  = 0x8f; r19  = 0x14;
  156. r20  = 0x1f; r21  = 0x96; r22  = 0xb9; r23  = 0xa3; r24  = 0xff;
  157. boutb(25, 0x00, 0x3d4, 0x3d5);
  158.  
  159. rmwb(0x3d4, 0x3d5, 0x2a, 0x05, 0x90);
  160. rmwb(0x3d4, 0x3d5, 0x2b, 0xff, 0x00);
  161. r44  = 0x00; r45  = 0x00; r46  = 0x00; r47  = 0x42; 
  162. boutb(4, 0x2c, 0x3d4, 0x3d5);
  163.  
  164. rmwb(0x3d4, 0x3d5, 0x31, 0x87, 0x00);
  165. rmwb(0x3d4, 0x3d5, 0x32, 0x74, 0x00);
  166. rmwb(0x3d4, 0x3d5, 0x33, 0x61, 0x00);
  167. r54  = 0x00; r55  = 0x00; r56  = 0x00; r57  = 0x00; 
  168. boutb(4, 0x36, 0x3d4, 0x3d5);
  169.  
  170. rmwb(0x3d4, 0x3d5, 0x3a, 0x02, 0x80);
  171. rmwb(0x3d4, 0x3d5, 0x3c, 0x3f, 0x80);
  172. rmwb(0x3d4, 0x3d5, 0x3e, 0xa7, 0x00);
  173. /*
  174.  *    Set Attribute Registers
  175.  */
  176.  
  177. r0   = 0x00; r1   = 0x01; r2   = 0x02; r3   = 0x03; r4   = 0x04;
  178. r5   = 0x05; r6   = 0x14; r7   = 0x07; r8   = 0x38; r9   = 0x39;
  179. r10  = 0x3a; r11  = 0x3b; r12  = 0x3c; r13  = 0x3d; r14  = 0x3e;
  180. r15  = 0x3f; r16  = 0x0c; r17  = 0x00; r18  = 0x0f; r19  = 0x08;
  181. boutb(20, 0x00, 0x3c0, 0x3c1);
  182.  
  183. /*
  184.  *    Set GDC Registers
  185.  */
  186.  
  187. r0   = 0x00; r1   = 0x00; r2   = 0x00; r3   = 0x00; r4   = 0x00;
  188. r5   = 0x10; r6   = 0x0e; r7   = 0x00; r8   = 0xff; r9   = 0x00;
  189. r10  = 0x00; 
  190. boutb(11, 0x00, 0x3ce, 0x3cf);
  191.  
  192. rmwb(0x3ce, 0x3cf, 0x0b, 0x00, 0xc5);
  193. rmwb(0x3ce, 0x3cf, 0x0c, 0x01, 0x00);
  194. r13  = 0x00; 
  195. boutb(1, 0x0d, 0x3ce, 0x3cf);
  196.  
  197. rmwb(0x3ce, 0x3cf, 0x0e, 0x60, 0x00);
  198. r16  = 0x00; r17  = 0x00; r18  = 0x00; r19  = 0x00; 
  199. boutb(4, 0x10, 0x3ce, 0x3cf);
  200.  
  201. r21  = 0x10; r22  = 0x0e; 
  202. boutb(2, 0x15, 0x3ce, 0x3cf);
  203.  
  204. outw(0x23c0, 0x2000);
  205. wait(0x23c2, 0x0800, 0x1, 0x64, 0x0);
  206. outw(0x23c0, 0x0000);
  207. /*
  208.  *    Set Other Registers
  209.  */
  210.  
  211. outw(0x23c2, 0x0000);
  212. outw(0x23c0, 0x0001);
  213. outw(0x23c2, 0x0104);
  214. outw(0x23c2, 0x1010);
  215. outw(0x23c2, 0x2033);
  216. outw(0x23c2, 0x3078);
  217. outw(0x23c2, 0x4dce);
  218. outw(0x23c2, 0x5031);
  219. outw(0x23c2, 0x6003);
  220. outw(0x23c2, 0x704f);
  221. outw(0x23c2, 0x8400);
  222. outw(0x23c2, 0x9300);
  223. outw(0x23c2, 0xa041);
  224. outw(0x23c2, 0xb022);
  225. outw(0x23c2, 0xc0ff);
  226. outw(0x23c2, 0xd080);
  227. outw(0x23c2, 0xe0ff);
  228. outw(0x23c0, 0x0102);
  229. outw(0x23c2, 0x1000);
  230. outw(0x23c2, 0x2000);
  231. outw(0x23c2, 0x3000);
  232. outw(0x23c2, 0x4000);
  233. outw(0x23c2, 0x5000);
  234. outw(0x23c2, 0x67c0);
  235. outw(0x23c2, 0x7000);
  236. outw(0x23c2, 0x8000);
  237. outw(0x23c0, 0x0002);
  238. outw(0x23c2, 0x0a00);
  239. outw(0x23c8, 0x0000);
  240. outw(0x23ca, 0x0000);
  241. outw(0x23cc, 0x0000);
  242. /*
  243.  *    Set Miscellaneous Output Register
  244.  */
  245.  
  246. outb(0x3c2, 0x67);
  247.  
  248.  
  249. [comment]
  250.     Text Mode: 80 cols, 25 rows.
  251.  
  252. [ModeInfo]
  253.         ModeAttributes   = 0x08
  254.         BytesPerScanLine = 80
  255.         XResolution      = 720
  256.         YResolution      = 400
  257.         XCharSize        = 9
  258.         YCharSize        = 16
  259.         TextRows         = 25
  260.         BitsPerPixel     = 4
  261.         NumberOfPlanes   = 1
  262.         PageLength       = 4000
  263.         SaveSize         = 4000
  264.         TotalMemory      = 1048576
  265.         InterlaceMode    = 0
  266.         BufferAddress    = 0x0b8000
  267.  
  268. [TrapRegs]
  269.     0x3c2;
  270.     0x3c4, 0x00-0x04, 0x06-0x09, 0x10-0x12, 0x20-0x29, 0x31-0x36;
  271.     0x3c5;
  272.     0x3d4, 0x00-0x18, 0x29-0x2f, 0x31-0x33, 0x35-0x3a, 0x3c-0x3c, 0x3e-0x3e;
  273.     0x3d5;
  274.     0x3c0, 0x00-0x13;
  275.     0x3c1;
  276.     0x3ce, 0x00-0x13, 0x15-0x16;
  277.     0x3cf;
  278.     0x23c0;
  279.     0x23c2;
  280.     0x23c8;
  281.     0x23ca;
  282.     0x23cc;
  283.     0x3b4;
  284.     0x3b5;
  285.  
  286. [SetMode]
  287.  
  288. /*
  289.  *    Set Miscellaneous Output Register
  290.  */
  291.  
  292. outb(0x3c2, 0x63);
  293.  
  294.  
  295. /*
  296.  *    Set Sequencer Registers
  297.  */
  298.  
  299. r0   = 0x00; r1   = 0x00; r2   = 0x03; r3   = 0x00; r4   = 0x02;
  300. boutb(5, 0x00, 0x3c4, 0x3c5);
  301.  
  302. outw(0x3c4, 0x0300);
  303. r7   = 0x09; r8   = 0x00; r9   = 0x00; 
  304. boutb(3, 0x07, 0x3c4, 0x3c5);
  305.  
  306. rmwb(0x3c4, 0x3c5, 0x10, 0x20, 0xc1);
  307. r17  = 0x65; r18  = 0x00; 
  308. boutb(2, 0x11, 0x3c4, 0x3c5);
  309.  
  310. r32  = 0x00; 
  311. boutb(1, 0x20, 0x3c4, 0x3c5);
  312.  
  313. rmwb(0x3c4, 0x3c5, 0x21, 0x07, 0x00);
  314. r34  = 0x00; r35  = 0x00; r36  = 0xa0; r37  = 0x00; r38  = 0x00;
  315. r39  = 0x00; r40  = 0x00; 
  316. boutb(7, 0x22, 0x3c4, 0x3c5);
  317.  
  318. rmwb(0x3c4, 0x3c5, 0x29, 0x04, 0x00);
  319. rmwb(0x3c4, 0x3c5, 0x31, 0x00, 0x0c);
  320. rmwb(0x3c4, 0x3c5, 0x32, 0xff, 0x00);
  321. r51  = 0x00; r52  = 0x00; 
  322. boutb(2, 0x33, 0x3c4, 0x3c5);
  323.  
  324. r54  = 0x00; 
  325. boutb(1, 0x36, 0x3c4, 0x3c5);
  326.  
  327. /*
  328.  *    Set CRT Registers
  329.  */
  330.  
  331. outw(0x3d4, 0x0e11);
  332. r0   = 0x5f; r1   = 0x4f; r2   = 0x50; r3   = 0x82; r4   = 0x55;
  333. r5   = 0x81; r6   = 0xbf; r7   = 0x1f; r8   = 0x00; r9   = 0x4f;
  334. r10  = 0x0d; r11  = 0x0e; r12  = 0x00; r13  = 0x00; r14  = 0x00;
  335. r15  = 0x00; r16  = 0x9c; r17  = 0x8e; r18  = 0x8f; r19  = 0x28;
  336. r20  = 0x1f; r21  = 0x96; r22  = 0xb9; r23  = 0xa3; r24  = 0xff;
  337. boutb(25, 0x00, 0x3d4, 0x3d5);
  338.  
  339. rmwb(0x3d4, 0x3d5, 0x2a, 0x05, 0x90);
  340. rmwb(0x3d4, 0x3d5, 0x2b, 0xff, 0x00);
  341. r44  = 0x00; r45  = 0x00; r46  = 0x00; r47  = 0x42; 
  342. boutb(4, 0x2c, 0x3d4, 0x3d5);
  343.  
  344. rmwb(0x3d4, 0x3d5, 0x31, 0x87, 0x00);
  345. rmwb(0x3d4, 0x3d5, 0x32, 0x74, 0x00);
  346. rmwb(0x3d4, 0x3d5, 0x33, 0x61, 0x00);
  347. r54  = 0x00; r55  = 0x00; r56  = 0x00; r57  = 0x00; 
  348. boutb(4, 0x36, 0x3d4, 0x3d5);
  349.  
  350. rmwb(0x3d4, 0x3d5, 0x3a, 0x02, 0x80);
  351. rmwb(0x3d4, 0x3d5, 0x3c, 0x3f, 0x80);
  352. rmwb(0x3d4, 0x3d5, 0x3e, 0xa7, 0x00);
  353. /*
  354.  *    Set Attribute Registers
  355.  */
  356.  
  357. r0   = 0x00; r1   = 0x01; r2   = 0x02; r3   = 0x03; r4   = 0x04;
  358. r5   = 0x05; r6   = 0x14; r7   = 0x07; r8   = 0x38; r9   = 0x39;
  359. r10  = 0x3a; r11  = 0x3b; r12  = 0x3c; r13  = 0x3d; r14  = 0x3e;
  360. r15  = 0x3f; r16  = 0x0c; r17  = 0x00; r18  = 0x0f; r19  = 0x08;
  361. boutb(20, 0x00, 0x3c0, 0x3c1);
  362.  
  363. /*
  364.  *    Set GDC Registers
  365.  */
  366.  
  367. r0   = 0x00; r1   = 0x00; r2   = 0x00; r3   = 0x00; r4   = 0x00;
  368. r5   = 0x10; r6   = 0x0e; r7   = 0x00; r8   = 0xff; r9   = 0x00;
  369. r10  = 0x00; 
  370. boutb(11, 0x00, 0x3ce, 0x3cf);
  371.  
  372. rmwb(0x3ce, 0x3cf, 0x0b, 0x00, 0xc5);
  373. rmwb(0x3ce, 0x3cf, 0x0c, 0x01, 0x00);
  374. r13  = 0x00; 
  375. boutb(1, 0x0d, 0x3ce, 0x3cf);
  376.  
  377. rmwb(0x3ce, 0x3cf, 0x0e, 0x60, 0x00);
  378. r16  = 0x00; r17  = 0x00; r18  = 0x00; r19  = 0x00; 
  379. boutb(4, 0x10, 0x3ce, 0x3cf);
  380.  
  381. r21  = 0x10; r22  = 0x0e; 
  382. boutb(2, 0x15, 0x3ce, 0x3cf);
  383.  
  384. outw(0x23c0, 0x2000);
  385. wait(0x23c2, 0x0800, 0x1, 0x64, 0x0);
  386. outw(0x23c0, 0x0000);
  387. /*
  388.  *    Set Other Registers
  389.  */
  390.  
  391. outw(0x23c2, 0x0000);
  392. outw(0x23c0, 0x0001);
  393. outw(0x23c2, 0x0104);
  394. outw(0x23c2, 0x1010);
  395. outw(0x23c2, 0x2033);
  396. outw(0x23c2, 0x3078);
  397. outw(0x23c2, 0x4dce);
  398. outw(0x23c2, 0x5031);
  399. outw(0x23c2, 0x6003);
  400. outw(0x23c2, 0x704f);
  401. outw(0x23c2, 0x8400);
  402. outw(0x23c2, 0x9300);
  403. outw(0x23c2, 0xa041);
  404. outw(0x23c2, 0xb022);
  405. outw(0x23c2, 0xc0ff);
  406. outw(0x23c2, 0xd080);
  407. outw(0x23c2, 0xe0ff);
  408. outw(0x23c0, 0x0102);
  409. outw(0x23c2, 0x1000);
  410. outw(0x23c2, 0x2000);
  411. outw(0x23c2, 0x3000);
  412. outw(0x23c2, 0x4000);
  413. outw(0x23c2, 0x5000);
  414. outw(0x23c2, 0x67c0);
  415. outw(0x23c2, 0x7000);
  416. outw(0x23c2, 0x8000);
  417. outw(0x23c0, 0x0002);
  418. outw(0x23c2, 0x0a00);
  419. outw(0x23c8, 0x0000);
  420. outw(0x23ca, 0x0000);
  421. outw(0x23cc, 0x0000);
  422. /*
  423.  *    Set Miscellaneous Output Register
  424.  */
  425.  
  426. outb(0x3c2, 0x67);
  427.  
  428.  
  429. [comment]
  430.     Graphics Mode: 640 x 480 x 16 colors.
  431.  
  432. [ModeInfo]
  433.         ModeAttributes   = 0x18
  434.         BytesPerScanLine = 80
  435.         XResolution      = 640
  436.         YResolution      = 480
  437.         TextRows         = 24
  438.         BitsPerPixel     = 4
  439.         NumberOfPlanes   = 4
  440.         PageLength       = 38400
  441.         SaveSize         = 153600
  442.         TotalMemory      = 1048576
  443.         InterlaceMode    = 0
  444.         BufferAddress    = 0x0a0000
  445.  
  446. [TrapRegs]
  447.     0x3c2;
  448.     0x3c4, 0x00-0x04, 0x06-0x09, 0x10-0x12, 0x20-0x29, 0x31-0x36;
  449.     0x3c5;
  450.     0x3d4, 0x00-0x18, 0x29-0x2f, 0x31-0x33, 0x35-0x3a, 0x3c-0x3c, 0x3e-0x3e;
  451.     0x3d5;
  452.     0x3c0, 0x00-0x13;
  453.     0x3c1;
  454.     0x3ce, 0x00-0x13, 0x15-0x16;
  455.     0x3cf;
  456.     0x23c0;
  457.     0x23c2;
  458.     0x23c8;
  459.     0x23ca;
  460.     0x23cc;
  461.     0x3b4;
  462.     0x3b5;
  463.  
  464. [SetMode]
  465.  
  466. /*
  467.  *    Set Miscellaneous Output Register
  468.  */
  469.  
  470. outb(0x3c2, 0xe3);
  471.  
  472.  
  473. /*
  474.  *    Set Sequencer Registers
  475.  */
  476.  
  477. r0   = 0x00; r1   = 0x01; r2   = 0x0f; r3   = 0x00; r4   = 0x06;
  478. boutb(5, 0x00, 0x3c4, 0x3c5);
  479.  
  480. outw(0x3c4, 0x0300);
  481. r7   = 0x09; r8   = 0x00; r9   = 0x00; 
  482. boutb(3, 0x07, 0x3c4, 0x3c5);
  483.  
  484. rmwb(0x3c4, 0x3c5, 0x10, 0x20, 0xc1);
  485. r17  = 0x65; r18  = 0x00; 
  486. boutb(2, 0x11, 0x3c4, 0x3c5);
  487.  
  488. r32  = 0x00; 
  489. boutb(1, 0x20, 0x3c4, 0x3c5);
  490.  
  491. rmwb(0x3c4, 0x3c5, 0x21, 0x07, 0x00);
  492. r34  = 0x00; r35  = 0x00; r36  = 0xa0; r37  = 0x00; r38  = 0x00;
  493. r39  = 0x00; r40  = 0x00; 
  494. boutb(7, 0x22, 0x3c4, 0x3c5);
  495.  
  496. rmwb(0x3c4, 0x3c5, 0x29, 0x04, 0x00);
  497. rmwb(0x3c4, 0x3c5, 0x31, 0x00, 0x0c);
  498. rmwb(0x3c4, 0x3c5, 0x32, 0xff, 0x00);
  499. r51  = 0x00; r52  = 0x00; 
  500. boutb(2, 0x33, 0x3c4, 0x3c5);
  501.  
  502. r54  = 0x00; 
  503. boutb(1, 0x36, 0x3c4, 0x3c5);
  504.  
  505. /*
  506.  *    Set CRT Registers
  507.  */
  508.  
  509. outw(0x3d4, 0x0e11);
  510. r0   = 0x5f; r1   = 0x4f; r2   = 0x50; r3   = 0x82; r4   = 0x54;
  511. r5   = 0x80; r6   = 0x0b; r7   = 0x3e; r8   = 0x00; r9   = 0x40;
  512. r10  = 0x00; r11  = 0x00; r12  = 0x00; r13  = 0x00; r14  = 0x00;
  513. r15  = 0x00; r16  = 0xea; r17  = 0x8c; r18  = 0xdf; r19  = 0x28;
  514. r20  = 0x00; r21  = 0xe7; r22  = 0x04; r23  = 0xe3; r24  = 0xff;
  515. boutb(25, 0x00, 0x3d4, 0x3d5);
  516.  
  517. rmwb(0x3d4, 0x3d5, 0x2a, 0x05, 0x90);
  518. rmwb(0x3d4, 0x3d5, 0x2b, 0xff, 0x00);
  519. r44  = 0x00; r45  = 0x00; r46  = 0x00; r47  = 0x42; 
  520. boutb(4, 0x2c, 0x3d4, 0x3d5);
  521.  
  522. rmwb(0x3d4, 0x3d5, 0x31, 0x87, 0x00);
  523. rmwb(0x3d4, 0x3d5, 0x32, 0x74, 0x00);
  524. rmwb(0x3d4, 0x3d5, 0x33, 0x61, 0x00);
  525. r54  = 0x00; r55  = 0x00; r56  = 0x00; r57  = 0x00; 
  526. boutb(4, 0x36, 0x3d4, 0x3d5);
  527.  
  528. rmwb(0x3d4, 0x3d5, 0x3a, 0x02, 0x80);
  529. rmwb(0x3d4, 0x3d5, 0x3c, 0x3f, 0x80);
  530. rmwb(0x3d4, 0x3d5, 0x3e, 0xa7, 0x00);
  531. /*
  532.  *    Set Attribute Registers
  533.  */
  534.  
  535. r0   = 0x00; r1   = 0x01; r2   = 0x02; r3   = 0x03; r4   = 0x04;
  536. r5   = 0x05; r6   = 0x14; r7   = 0x07; r8   = 0x38; r9   = 0x39;
  537. r10  = 0x3a; r11  = 0x3b; r12  = 0x3c; r13  = 0x3d; r14  = 0x3e;
  538. r15  = 0x3f; r16  = 0x01; r17  = 0x00; r18  = 0x0f; r19  = 0x00;
  539. boutb(20, 0x00, 0x3c0, 0x3c1);
  540.  
  541. /*
  542.  *    Set GDC Registers
  543.  */
  544.  
  545. r0   = 0x00; r1   = 0x00; r2   = 0x00; r3   = 0x00; r4   = 0x00;
  546. r5   = 0x00; r6   = 0x05; r7   = 0x0f; r8   = 0xff; r9   = 0x00;
  547. r10  = 0x00; 
  548. boutb(11, 0x00, 0x3ce, 0x3cf);
  549.  
  550. rmwb(0x3ce, 0x3cf, 0x0b, 0x00, 0xc5);
  551. rmwb(0x3ce, 0x3cf, 0x0c, 0x01, 0x00);
  552. r13  = 0x00; 
  553. boutb(1, 0x0d, 0x3ce, 0x3cf);
  554.  
  555. rmwb(0x3ce, 0x3cf, 0x0e, 0x60, 0x00);
  556. r16  = 0x00; r17  = 0x00; r18  = 0x00; r19  = 0x00; 
  557. boutb(4, 0x10, 0x3ce, 0x3cf);
  558.  
  559. r21  = 0x00; r22  = 0x05; 
  560. boutb(2, 0x15, 0x3ce, 0x3cf);
  561.  
  562. outw(0x23c0, 0x2000);
  563. wait(0x23c2, 0x0800, 0x1, 0x64, 0x0);
  564. outw(0x23c0, 0x0000);
  565. /*
  566.  *    Set Other Registers
  567.  */
  568.  
  569. outw(0x23c2, 0x0000);
  570. outw(0x23c0, 0x0001);
  571. outw(0x23c2, 0x0104);
  572. outw(0x23c2, 0x1010);
  573. outw(0x23c2, 0x2033);
  574. outw(0x23c2, 0x3078);
  575. outw(0x23c2, 0x4dce);
  576. outw(0x23c2, 0x5031);
  577. outw(0x23c2, 0x6003);
  578. outw(0x23c2, 0x704f);
  579. outw(0x23c2, 0x8400);
  580. outw(0x23c2, 0x9300);
  581. outw(0x23c2, 0xa041);
  582. outw(0x23c2, 0xb022);
  583. outw(0x23c2, 0xc0ff);
  584. outw(0x23c2, 0xd080);
  585. outw(0x23c2, 0xe0ff);
  586. outw(0x23c0, 0x0102);
  587. outw(0x23c2, 0x1000);
  588. outw(0x23c2, 0x2000);
  589. outw(0x23c2, 0x3000);
  590. outw(0x23c2, 0x4000);
  591. outw(0x23c2, 0x5000);
  592. outw(0x23c2, 0x67c0);
  593. outw(0x23c2, 0x7000);
  594. outw(0x23c2, 0x8000);
  595. outw(0x23c0, 0x0002);
  596. outw(0x23c2, 0x0a00);
  597. outw(0x23c8, 0x0000);
  598. outw(0x23ca, 0x0000);
  599. outw(0x23cc, 0x0000);
  600. /*
  601.  *    Set Miscellaneous Output Register
  602.  */
  603.  
  604. outb(0x3c2, 0xe3);
  605.  
  606.  
  607. [comment]
  608.     Graphics Mode: 640 x 480 x 256 colors.
  609.  
  610. [ModeInfo]
  611.         ModeAttributes   = 0x18
  612.         BytesPerScanLine = 80
  613.         XResolution      = 640
  614.         YResolution      = 480
  615.         TextRows         = 30
  616.         BitsPerPixel     = 8
  617.         NumberOfPlanes   = 1
  618.         PageLength       = 307200
  619.         SaveSize         = 307200
  620.         TotalMemory      = 1048576
  621.         InterlaceMode    = 0
  622.         BufferAddress    = 0x0a0000
  623.  
  624. [TrapRegs]
  625.     0x3c2;
  626.     0x3c4, 0x00-0x04, 0x06-0x09, 0x10-0x12, 0x20-0x29, 0x31-0x36;
  627.     0x3c5;
  628.     0x3d4, 0x00-0x18, 0x29-0x2f, 0x31-0x33, 0x35-0x3a, 0x3c-0x3c, 0x3e-0x3e;
  629.     0x3d5;
  630.     0x3c0, 0x00-0x13;
  631.     0x3c1;
  632.     0x3ce, 0x00-0x13, 0x15-0x16;
  633.     0x3cf;
  634.     0x23c0;
  635.     0x23c2;
  636.     0x23c8;
  637.     0x23ca;
  638.     0x23cc;
  639.     0x3b4;
  640.     0x3b5;
  641.  
  642. [SetMode]
  643.  
  644. /*
  645.  *    Set Miscellaneous Output Register
  646.  */
  647.  
  648. outb(0x3c2, 0xe3);
  649.  
  650.  
  651. /*
  652.  *    Set Sequencer Registers
  653.  */
  654.  
  655. r0   = 0x00; r1   = 0x01; r2   = 0x0f; r3   = 0x00; r4   = 0x0e;
  656. boutb(5, 0x00, 0x3c4, 0x3c5);
  657.  
  658. outw(0x3c4, 0x0300);
  659. r7   = 0x09; r8   = 0x00; r9   = 0x00; 
  660. boutb(3, 0x07, 0x3c4, 0x3c5);
  661.  
  662. rmwb(0x3c4, 0x3c5, 0x10, 0x20, 0xc1);
  663. r17  = 0x65; r18  = 0x00; 
  664. boutb(2, 0x11, 0x3c4, 0x3c5);
  665.  
  666. r32  = 0x00; 
  667. boutb(1, 0x20, 0x3c4, 0x3c5);
  668.  
  669. rmwb(0x3c4, 0x3c5, 0x21, 0x07, 0x00);
  670. r34  = 0x00; r35  = 0x00; r36  = 0xa0; r37  = 0x00; r38  = 0x00;
  671. r39  = 0x00; r40  = 0x00; 
  672. boutb(7, 0x22, 0x3c4, 0x3c5);
  673.  
  674. rmwb(0x3c4, 0x3c5, 0x29, 0x04, 0x00);
  675. rmwb(0x3c4, 0x3c5, 0x31, 0x00, 0x0c);
  676. rmwb(0x3c4, 0x3c5, 0x32, 0xff, 0x00);
  677. r51  = 0x00; r52  = 0x00; 
  678. boutb(2, 0x33, 0x3c4, 0x3c5);
  679.  
  680. r54  = 0x00; 
  681. boutb(1, 0x36, 0x3c4, 0x3c5);
  682.  
  683. /*
  684.  *    Set CRT Registers
  685.  */
  686.  
  687. outw(0x3d4, 0x0e11);
  688. r0   = 0x5f; r1   = 0x4f; r2   = 0x50; r3   = 0x82; r4   = 0x53;
  689. r5   = 0x9f; r6   = 0x0b; r7   = 0x3e; r8   = 0x00; r9   = 0x40;
  690. r10  = 0x00; r11  = 0x00; r12  = 0x00; r13  = 0x00; r14  = 0x00;
  691. r15  = 0x00; r16  = 0xea; r17  = 0x8c; r18  = 0xdf; r19  = 0x50;
  692. r20  = 0x40; r21  = 0xe7; r22  = 0x04; r23  = 0xe3; r24  = 0xff;
  693. boutb(25, 0x00, 0x3d4, 0x3d5);
  694.  
  695. rmwb(0x3d4, 0x3d5, 0x2a, 0x05, 0x90);
  696. rmwb(0x3d4, 0x3d5, 0x2b, 0xff, 0x00);
  697. r44  = 0x00; r45  = 0x00; r46  = 0x00; r47  = 0x20; 
  698. boutb(4, 0x2c, 0x3d4, 0x3d5);
  699.  
  700. rmwb(0x3d4, 0x3d5, 0x31, 0x87, 0x00);
  701. rmwb(0x3d4, 0x3d5, 0x32, 0x74, 0x00);
  702. rmwb(0x3d4, 0x3d5, 0x33, 0x61, 0x00);
  703. r54  = 0x00; r55  = 0x00; r56  = 0x00; r57  = 0x00; 
  704. boutb(4, 0x36, 0x3d4, 0x3d5);
  705.  
  706. rmwb(0x3d4, 0x3d5, 0x3a, 0x02, 0x80);
  707. rmwb(0x3d4, 0x3d5, 0x3c, 0x3f, 0x80);
  708. rmwb(0x3d4, 0x3d5, 0x3e, 0xa7, 0x00);
  709. /*
  710.  *    Set Attribute Registers
  711.  */
  712.  
  713. r0   = 0x00; r1   = 0x01; r2   = 0x02; r3   = 0x03; r4   = 0x04;
  714. r5   = 0x05; r6   = 0x06; r7   = 0x07; r8   = 0x08; r9   = 0x09;
  715. r10  = 0x0a; r11  = 0x0b; r12  = 0x0c; r13  = 0x0d; r14  = 0x0e;
  716. r15  = 0x0f; r16  = 0x41; r17  = 0x00; r18  = 0x0f; r19  = 0x00;
  717. boutb(20, 0x00, 0x3c0, 0x3c1);
  718.  
  719. /*
  720.  *    Set GDC Registers
  721.  */
  722.  
  723. r0   = 0x00; r1   = 0x00; r2   = 0x00; r3   = 0x00; r4   = 0x00;
  724. r5   = 0x40; r6   = 0x05; r7   = 0x0f; r8   = 0xff; r9   = 0x00;
  725. r10  = 0x00; 
  726. boutb(11, 0x00, 0x3ce, 0x3cf);
  727.  
  728. rmwb(0x3ce, 0x3cf, 0x0b, 0x00, 0xc5);
  729. rmwb(0x3ce, 0x3cf, 0x0c, 0x01, 0x00);
  730. r13  = 0x00; 
  731. boutb(1, 0x0d, 0x3ce, 0x3cf);
  732.  
  733. rmwb(0x3ce, 0x3cf, 0x0e, 0x60, 0x01);
  734. r16  = 0x00; r17  = 0x00; r18  = 0x00; r19  = 0x00; 
  735. boutb(4, 0x10, 0x3ce, 0x3cf);
  736.  
  737. r21  = 0x40; r22  = 0x05; 
  738. boutb(2, 0x15, 0x3ce, 0x3cf);
  739.  
  740. outw(0x23c0, 0x2000);
  741. wait(0x23c2, 0x0800, 0x1, 0x64, 0x0);
  742. outw(0x23c0, 0x0000);
  743. /*
  744.  *    Set Other Registers
  745.  */
  746.  
  747. outw(0x23c2, 0x0000);
  748. outw(0x23c0, 0x0001);
  749. outw(0x23c2, 0x0104);
  750. outw(0x23c2, 0x1010);
  751. outw(0x23c2, 0x2033);
  752. outw(0x23c2, 0x3078);
  753. outw(0x23c2, 0x4dce);
  754. outw(0x23c2, 0x5031);
  755. outw(0x23c2, 0x6003);
  756. outw(0x23c2, 0x704f);
  757. outw(0x23c2, 0x8400);
  758. outw(0x23c2, 0x9300);
  759. outw(0x23c2, 0xa041);
  760. outw(0x23c2, 0xb022);
  761. outw(0x23c2, 0xc0ff);
  762. outw(0x23c2, 0xd080);
  763. outw(0x23c2, 0xe0ff);
  764. outw(0x23c0, 0x0102);
  765. outw(0x23c2, 0x1000);
  766. outw(0x23c2, 0x2000);
  767. outw(0x23c2, 0x3000);
  768. outw(0x23c2, 0x4000);
  769. outw(0x23c2, 0x5000);
  770. outw(0x23c2, 0x67c0);
  771. outw(0x23c2, 0x7000);
  772. outw(0x23c2, 0x8000);
  773. outw(0x23c0, 0x0002);
  774. outw(0x23c2, 0x0a00);
  775. outw(0x23c8, 0x0000);
  776. outw(0x23ca, 0x0000);
  777. outw(0x23cc, 0x0000);
  778. /*
  779.  *    Set Miscellaneous Output Register
  780.  */
  781.  
  782. outb(0x3c2, 0xe3);
  783.  
  784.  
  785. [comment]
  786.     Graphics Mode: 800 x 600 x 16 colors.
  787.  
  788. [ModeInfo]
  789.         ModeAttributes   = 0x18
  790.         BytesPerScanLine = 100
  791.         XResolution      = 800
  792.         YResolution      = 600
  793.         TextRows         = 37
  794.         BitsPerPixel     = 4
  795.         NumberOfPlanes   = 4
  796.         PageLength       = 60000
  797.         SaveSize         = 240000
  798.         TotalMemory      = 1048576
  799.         InterlaceMode    = 0
  800.         BufferAddress    = 0x0a0000
  801.  
  802. [TrapRegs]
  803.     0x3c2;
  804.     0x3c4, 0x00-0x04, 0x06-0x09, 0x10-0x12, 0x20-0x29, 0x31-0x36;
  805.     0x3c5;
  806.     0x3d4, 0x00-0x18, 0x29-0x2f, 0x31-0x33, 0x35-0x3a, 0x3c-0x3c, 0x3e-0x3e;
  807.     0x3d5;
  808.     0x3c0, 0x00-0x13;
  809.     0x3c1;
  810.     0x3ce, 0x00-0x13, 0x15-0x16;
  811.     0x3cf;
  812.     0x23c0;
  813.     0x23c2;
  814.     0x23c8;
  815.     0x23ca;
  816.     0x23cc;
  817.     0x3b4;
  818.     0x3b5;
  819.  
  820. [SetMode]
  821.  
  822. /*
  823.  *    Set Miscellaneous Output Register
  824.  */
  825.  
  826. outb(0x3c2, 0xe3);
  827.  
  828.  
  829. /*
  830.  *    Set Sequencer Registers
  831.  */
  832.  
  833. r0   = 0x00; r1   = 0x01; r2   = 0x0f; r3   = 0x00; r4   = 0x06;
  834. boutb(5, 0x00, 0x3c4, 0x3c5);
  835.  
  836. outw(0x3c4, 0x0300);
  837. r7   = 0x09; r8   = 0x00; r9   = 0x00; 
  838. boutb(3, 0x07, 0x3c4, 0x3c5);
  839.  
  840. rmwb(0x3c4, 0x3c5, 0x10, 0x20, 0xc1);
  841. r17  = 0x65; r18  = 0x00; 
  842. boutb(2, 0x11, 0x3c4, 0x3c5);
  843.  
  844. r32  = 0x00; 
  845. boutb(1, 0x20, 0x3c4, 0x3c5);
  846.  
  847. rmwb(0x3c4, 0x3c5, 0x21, 0x07, 0x00);
  848. r34  = 0x00; r35  = 0x00; r36  = 0xa0; r37  = 0x00; r38  = 0x00;
  849. r39  = 0x00; r40  = 0x00; 
  850. boutb(7, 0x22, 0x3c4, 0x3c5);
  851.  
  852. rmwb(0x3c4, 0x3c5, 0x29, 0x04, 0x00);
  853. rmwb(0x3c4, 0x3c5, 0x31, 0x00, 0x0c);
  854. rmwb(0x3c4, 0x3c5, 0x32, 0xff, 0x00);
  855. r51  = 0x00; r52  = 0x00; 
  856. boutb(2, 0x33, 0x3c4, 0x3c5);
  857.  
  858. r54  = 0x00; 
  859. boutb(1, 0x36, 0x3c4, 0x3c5);
  860.  
  861. /*
  862.  *    Set CRT Registers
  863.  */
  864.  
  865. outw(0x3d4, 0x0e11);
  866. r0   = 0x7b; r1   = 0x63; r2   = 0x64; r3   = 0x9e; r4   = 0x69;
  867. r5   = 0x92; r6   = 0x6f; r7   = 0xf0; r8   = 0x00; r9   = 0x60;
  868. r10  = 0x00; r11  = 0x00; r12  = 0x00; r13  = 0x00; r14  = 0x00;
  869. r15  = 0x00; r16  = 0x58; r17  = 0x8a; r18  = 0x57; r19  = 0x32;
  870. r20  = 0x00; r21  = 0x58; r22  = 0x6f; r23  = 0xe3; r24  = 0xff;
  871. boutb(25, 0x00, 0x3d4, 0x3d5);
  872.  
  873. rmwb(0x3d4, 0x3d5, 0x2a, 0x05, 0x90);
  874. rmwb(0x3d4, 0x3d5, 0x2b, 0xff, 0x00);
  875. r44  = 0x00; r45  = 0x00; r46  = 0x00; r47  = 0x00; 
  876. boutb(4, 0x2c, 0x3d4, 0x3d5);
  877.  
  878. rmwb(0x3d4, 0x3d5, 0x31, 0x87, 0x00);
  879. rmwb(0x3d4, 0x3d5, 0x32, 0x74, 0x00);
  880. rmwb(0x3d4, 0x3d5, 0x33, 0x61, 0x00);
  881. r54  = 0x00; r55  = 0x00; r56  = 0x00; r57  = 0x00; 
  882. boutb(4, 0x36, 0x3d4, 0x3d5);
  883.  
  884. rmwb(0x3d4, 0x3d5, 0x3a, 0x02, 0x80);
  885. rmwb(0x3d4, 0x3d5, 0x3c, 0x3f, 0x80);
  886. rmwb(0x3d4, 0x3d5, 0x3e, 0xa7, 0x00);
  887. /*
  888.  *    Set Attribute Registers
  889.  */
  890.  
  891. r0   = 0x00; r1   = 0x01; r2   = 0x02; r3   = 0x03; r4   = 0x04;
  892. r5   = 0x05; r6   = 0x14; r7   = 0x07; r8   = 0x38; r9   = 0x39;
  893. r10  = 0x3a; r11  = 0x3b; r12  = 0x3c; r13  = 0x3d; r14  = 0x3e;
  894. r15  = 0x3f; r16  = 0x01; r17  = 0x00; r18  = 0x0f; r19  = 0x00;
  895. boutb(20, 0x00, 0x3c0, 0x3c1);
  896.  
  897. /*
  898.  *    Set GDC Registers
  899.  */
  900.  
  901. r0   = 0x00; r1   = 0x00; r2   = 0x00; r3   = 0x00; r4   = 0x00;
  902. r5   = 0x00; r6   = 0x05; r7   = 0x0f; r8   = 0xff; r9   = 0x00;
  903. r10  = 0x00; 
  904. boutb(11, 0x00, 0x3ce, 0x3cf);
  905.  
  906. rmwb(0x3ce, 0x3cf, 0x0b, 0x00, 0xc5);
  907. rmwb(0x3ce, 0x3cf, 0x0c, 0x01, 0x00);
  908. r13  = 0x00; 
  909. boutb(1, 0x0d, 0x3ce, 0x3cf);
  910.  
  911. rmwb(0x3ce, 0x3cf, 0x0e, 0x60, 0x00);
  912. r16  = 0x00; r17  = 0x00; r18  = 0x00; r19  = 0x00; 
  913. boutb(4, 0x10, 0x3ce, 0x3cf);
  914.  
  915. r21  = 0x00; r22  = 0x05; 
  916. boutb(2, 0x15, 0x3ce, 0x3cf);
  917.  
  918. outw(0x23c0, 0x2000);
  919. wait(0x23c2, 0x0800, 0x1, 0x64, 0x0);
  920. outw(0x23c0, 0x0000);
  921. /*
  922.  *    Set Other Registers
  923.  */
  924.  
  925. outw(0x23c2, 0x0000);
  926. outw(0x23c0, 0x0001);
  927. outw(0x23c2, 0x0104);
  928. outw(0x23c2, 0x1010);
  929. outw(0x23c2, 0x2033);
  930. outw(0x23c2, 0x3078);
  931. outw(0x23c2, 0x4dce);
  932. outw(0x23c2, 0x5031);
  933. outw(0x23c2, 0x6003);
  934. outw(0x23c2, 0x704f);
  935. outw(0x23c2, 0x8400);
  936. outw(0x23c2, 0x9300);
  937. outw(0x23c2, 0xa041);
  938. outw(0x23c2, 0xb022);
  939. outw(0x23c2, 0xc0ff);
  940. outw(0x23c2, 0xd080);
  941. outw(0x23c2, 0xe0ff);
  942. outw(0x23c0, 0x0102);
  943. outw(0x23c2, 0x1000);
  944. outw(0x23c2, 0x2000);
  945. outw(0x23c2, 0x3000);
  946. outw(0x23c2, 0x4000);
  947. outw(0x23c2, 0x5000);
  948. outw(0x23c2, 0x67c0);
  949. outw(0x23c2, 0x7000);
  950. outw(0x23c2, 0x8000);
  951. outw(0x23c0, 0x0002);
  952. outw(0x23c2, 0x0a00);
  953. outw(0x23c8, 0x0000);
  954. outw(0x23ca, 0x0000);
  955. outw(0x23cc, 0x0000);
  956. /*
  957.  *    Set Miscellaneous Output Register
  958.  */
  959.  
  960. outb(0x3c2, 0xef);
  961.  
  962.  
  963. [comment]
  964.     Graphics Mode: 800 x 600 x 256 colors.
  965.  
  966. [ModeInfo]
  967.         ModeAttributes   = 0x18
  968.         BytesPerScanLine = 100
  969.         XResolution      = 800
  970.         YResolution      = 600
  971.         TextRows         = 37
  972.         BitsPerPixel     = 8
  973.         NumberOfPlanes   = 1
  974.         PageLength       = 480000
  975.         SaveSize         = 480000
  976.         TotalMemory      = 1048576
  977.         InterlaceMode    = 0
  978.         BufferAddress    = 0x0a0000
  979.  
  980. [TrapRegs]
  981.     0x3c2;
  982.     0x3c4, 0x00-0x04, 0x06-0x09, 0x10-0x12, 0x20-0x29, 0x31-0x36;
  983.     0x3c5;
  984.     0x3d4, 0x00-0x18, 0x29-0x2f, 0x31-0x33, 0x35-0x3a, 0x3c-0x3c, 0x3e-0x3e;
  985.     0x3d5;
  986.     0x3c0, 0x00-0x13;
  987.     0x3c1;
  988.     0x3ce, 0x00-0x13, 0x15-0x16;
  989.     0x3cf;
  990.     0x23c0;
  991.     0x23c2;
  992.     0x23c8;
  993.     0x23ca;
  994.     0x23cc;
  995.     0x3b4;
  996.     0x3b5;
  997.  
  998. [SetMode]
  999.  
  1000. /*
  1001.  *    Set Miscellaneous Output Register
  1002.  */
  1003.  
  1004. outb(0x3c2, 0xe3);
  1005.  
  1006.  
  1007. /*
  1008.  *    Set Sequencer Registers
  1009.  */
  1010.  
  1011. r0   = 0x00; r1   = 0x01; r2   = 0x0f; r3   = 0x03; r4   = 0x0e;
  1012. boutb(5, 0x00, 0x3c4, 0x3c5);
  1013.  
  1014. outw(0x3c4, 0x0300);
  1015. r7   = 0x09; r8   = 0x00; r9   = 0x00; 
  1016. boutb(3, 0x07, 0x3c4, 0x3c5);
  1017.  
  1018. rmwb(0x3c4, 0x3c5, 0x10, 0x20, 0xc1);
  1019. r17  = 0x65; r18  = 0x00; 
  1020. boutb(2, 0x11, 0x3c4, 0x3c5);
  1021.  
  1022. r32  = 0x00; 
  1023. boutb(1, 0x20, 0x3c4, 0x3c5);
  1024.  
  1025. rmwb(0x3c4, 0x3c5, 0x21, 0x07, 0x00);
  1026. r34  = 0x00; r35  = 0x00; r36  = 0xa0; r37  = 0x00; r38  = 0x00;
  1027. r39  = 0x00; r40  = 0x00; 
  1028. boutb(7, 0x22, 0x3c4, 0x3c5);
  1029.  
  1030. rmwb(0x3c4, 0x3c5, 0x29, 0x04, 0x00);
  1031. rmwb(0x3c4, 0x3c5, 0x31, 0x00, 0x0c);
  1032. rmwb(0x3c4, 0x3c5, 0x32, 0xff, 0x00);
  1033. r51  = 0x00; r52  = 0x00; 
  1034. boutb(2, 0x33, 0x3c4, 0x3c5);
  1035.  
  1036. r54  = 0x00; 
  1037. boutb(1, 0x36, 0x3c4, 0x3c5);
  1038.  
  1039. /*
  1040.  *    Set CRT Registers
  1041.  */
  1042.  
  1043. outw(0x3d4, 0x0e11);
  1044. r0   = 0x7b; r1   = 0x63; r2   = 0x64; r3   = 0x9e; r4   = 0x69;
  1045. r5   = 0x92; r6   = 0x6f; r7   = 0xf0; r8   = 0x00; r9   = 0x60;
  1046. r10  = 0x00; r11  = 0x00; r12  = 0x00; r13  = 0x00; r14  = 0x00;
  1047. r15  = 0x00; r16  = 0x58; r17  = 0x8a; r18  = 0x57; r19  = 0x64;
  1048. r20  = 0x40; r21  = 0x58; r22  = 0x6f; r23  = 0xe3; r24  = 0xff;
  1049. boutb(25, 0x00, 0x3d4, 0x3d5);
  1050.  
  1051. rmwb(0x3d4, 0x3d5, 0x2a, 0x05, 0x90);
  1052. rmwb(0x3d4, 0x3d5, 0x2b, 0xff, 0x00);
  1053. r44  = 0x00; r45  = 0x00; r46  = 0x00; r47  = 0x00; 
  1054. boutb(4, 0x2c, 0x3d4, 0x3d5);
  1055.  
  1056. rmwb(0x3d4, 0x3d5, 0x31, 0x87, 0x00);
  1057. rmwb(0x3d4, 0x3d5, 0x32, 0x74, 0x00);
  1058. rmwb(0x3d4, 0x3d5, 0x33, 0x61, 0x00);
  1059. r54  = 0x00; r55  = 0x00; r56  = 0x00; r57  = 0x00; 
  1060. boutb(4, 0x36, 0x3d4, 0x3d5);
  1061.  
  1062. rmwb(0x3d4, 0x3d5, 0x3a, 0x02, 0x80);
  1063. rmwb(0x3d4, 0x3d5, 0x3c, 0x3f, 0x80);
  1064. rmwb(0x3d4, 0x3d5, 0x3e, 0xa7, 0x00);
  1065. /*
  1066.  *    Set Attribute Registers
  1067.  */
  1068.  
  1069. r0   = 0x00; r1   = 0x01; r2   = 0x02; r3   = 0x03; r4   = 0x04;
  1070. r5   = 0x05; r6   = 0x06; r7   = 0x07; r8   = 0x08; r9   = 0x09;
  1071. r10  = 0x0a; r11  = 0x0b; r12  = 0x0c; r13  = 0x0d; r14  = 0x0e;
  1072. r15  = 0x0f; r16  = 0x41; r17  = 0x00; r18  = 0x0f; r19  = 0x00;
  1073. boutb(20, 0x00, 0x3c0, 0x3c1);
  1074.  
  1075. /*
  1076.  *    Set GDC Registers
  1077.  */
  1078.  
  1079. r0   = 0x00; r1   = 0x00; r2   = 0x00; r3   = 0x00; r4   = 0x00;
  1080. r5   = 0x40; r6   = 0x05; r7   = 0x0f; r8   = 0xff; r9   = 0x00;
  1081. r10  = 0x00; 
  1082. boutb(11, 0x00, 0x3ce, 0x3cf);
  1083.  
  1084. rmwb(0x3ce, 0x3cf, 0x0b, 0x00, 0xc5);
  1085. rmwb(0x3ce, 0x3cf, 0x0c, 0x01, 0x00);
  1086. r13  = 0x00; 
  1087. boutb(1, 0x0d, 0x3ce, 0x3cf);
  1088.  
  1089. rmwb(0x3ce, 0x3cf, 0x0e, 0x60, 0x01);
  1090. r16  = 0x00; r17  = 0x00; r18  = 0x00; r19  = 0x00; 
  1091. boutb(4, 0x10, 0x3ce, 0x3cf);
  1092.  
  1093. r21  = 0x40; r22  = 0x05; 
  1094. boutb(2, 0x15, 0x3ce, 0x3cf);
  1095.  
  1096. outw(0x23c0, 0x2000);
  1097. wait(0x23c2, 0x0800, 0x1, 0x64, 0x0);
  1098. outw(0x23c0, 0x0000);
  1099. /*
  1100.  *    Set Other Registers
  1101.  */
  1102.  
  1103. outw(0x23c2, 0x0000);
  1104. outw(0x23c0, 0x0001);
  1105. outw(0x23c2, 0x0104);
  1106. outw(0x23c2, 0x1010);
  1107. outw(0x23c2, 0x2033);
  1108. outw(0x23c2, 0x3078);
  1109. outw(0x23c2, 0x4dce);
  1110. outw(0x23c2, 0x5031);
  1111. outw(0x23c2, 0x6003);
  1112. outw(0x23c2, 0x704f);
  1113. outw(0x23c2, 0x8400);
  1114. outw(0x23c2, 0x9300);
  1115. outw(0x23c2, 0xa041);
  1116. outw(0x23c2, 0xb022);
  1117. outw(0x23c2, 0xc0ff);
  1118. outw(0x23c2, 0xd080);
  1119. outw(0x23c2, 0xe0ff);
  1120. outw(0x23c0, 0x0102);
  1121. outw(0x23c2, 0x1000);
  1122. outw(0x23c2, 0x2000);
  1123. outw(0x23c2, 0x3000);
  1124. outw(0x23c2, 0x4000);
  1125. outw(0x23c2, 0x5000);
  1126. outw(0x23c2, 0x67c0);
  1127. outw(0x23c2, 0x7000);
  1128. outw(0x23c2, 0x8000);
  1129. outw(0x23c0, 0x0002);
  1130. outw(0x23c2, 0x0a00);
  1131. outw(0x23c8, 0x0000);
  1132. outw(0x23ca, 0x0000);
  1133. outw(0x23cc, 0x0000);
  1134. /*
  1135.  *    Set Miscellaneous Output Register
  1136.  */
  1137.  
  1138. outb(0x3c2, 0xef);
  1139.  
  1140.  
  1141. [comment]
  1142.     Graphics Mode: 1024 x 768 x 16 colors.
  1143.  
  1144. [ModeInfo]
  1145.         ModeAttributes   = 0x18
  1146.         BytesPerScanLine = 128
  1147.         XResolution      = 1024
  1148.         YResolution      = 768
  1149.         TextRows         = 48
  1150.         BitsPerPixel     = 4
  1151.         NumberOfPlanes   = 4
  1152.         PageLength       = 98304
  1153.         SaveSize         = 393216
  1154.         TotalMemory      = 1048576
  1155.         InterlaceMode    = 0
  1156.         BufferAddress    = 0x0a0000
  1157.  
  1158. [TrapRegs]
  1159.     0x3c2;
  1160.     0x3c4, 0x00-0x04, 0x06-0x09, 0x10-0x12, 0x20-0x29, 0x31-0x36;
  1161.     0x3c5;
  1162.     0x3d4, 0x00-0x18, 0x29-0x2f, 0x31-0x33, 0x35-0x3a, 0x3c-0x3c, 0x3e-0x3e;
  1163.     0x3d5;
  1164.     0x3c0, 0x00-0x13;
  1165.     0x3c1;
  1166.     0x3ce, 0x00-0x13, 0x15-0x16;
  1167.     0x3cf;
  1168.     0x23c0;
  1169.     0x23c2;
  1170.     0x23c8;
  1171.     0x23ca;
  1172.     0x23cc;
  1173.     0x3b4;
  1174.     0x3b5;
  1175.  
  1176. [SetMode]
  1177.  
  1178. /*
  1179.  *    Set Miscellaneous Output Register
  1180.  */
  1181.  
  1182. outb(0x3c2, 0x23);
  1183.  
  1184.  
  1185. /*
  1186.  *    Set Sequencer Registers
  1187.  */
  1188.  
  1189. r0   = 0x00; r1   = 0x01; r2   = 0x0f; r3   = 0x00; r4   = 0x06;
  1190. boutb(5, 0x00, 0x3c4, 0x3c5);
  1191.  
  1192. outw(0x3c4, 0x0300);
  1193. r7   = 0x09; r8   = 0x00; r9   = 0x00; 
  1194. boutb(3, 0x07, 0x3c4, 0x3c5);
  1195.  
  1196. rmwb(0x3c4, 0x3c5, 0x10, 0x20, 0xc1);
  1197. r17  = 0x65; r18  = 0x00; 
  1198. boutb(2, 0x11, 0x3c4, 0x3c5);
  1199.  
  1200. r32  = 0x00; 
  1201. boutb(1, 0x20, 0x3c4, 0x3c5);
  1202.  
  1203. rmwb(0x3c4, 0x3c5, 0x21, 0x07, 0x00);
  1204. r34  = 0x00; r35  = 0x00; r36  = 0xa0; r37  = 0x00; r38  = 0x00;
  1205. r39  = 0x00; r40  = 0x00; 
  1206. boutb(7, 0x22, 0x3c4, 0x3c5);
  1207.  
  1208. rmwb(0x3c4, 0x3c5, 0x29, 0x04, 0x00);
  1209. rmwb(0x3c4, 0x3c5, 0x31, 0x00, 0x14);
  1210. rmwb(0x3c4, 0x3c5, 0x32, 0xff, 0x00);
  1211. r51  = 0x00; r52  = 0x00; 
  1212. boutb(2, 0x33, 0x3c4, 0x3c5);
  1213.  
  1214. r54  = 0x00; 
  1215. boutb(1, 0x36, 0x3c4, 0x3c5);
  1216.  
  1217. /*
  1218.  *    Set CRT Registers
  1219.  */
  1220.  
  1221. outw(0x3d4, 0x0e11);
  1222. r0   = 0x99; r1   = 0x7f; r2   = 0x7f; r3   = 0x9c; r4   = 0x83;
  1223. r5   = 0x19; r6   = 0x97; r7   = 0x1f; r8   = 0x00; r9   = 0x40;
  1224. r10  = 0x00; r11  = 0x00; r12  = 0x00; r13  = 0x00; r14  = 0x00;
  1225. r15  = 0x00; r16  = 0x7f; r17  = 0x83; r18  = 0x7f; r19  = 0x40;
  1226. r20  = 0x00; r21  = 0x7f; r22  = 0x96; r23  = 0xe3; r24  = 0xff;
  1227. boutb(25, 0x00, 0x3d4, 0x3d5);
  1228.  
  1229. rmwb(0x3d4, 0x3d5, 0x2a, 0x05, 0x90);
  1230. rmwb(0x3d4, 0x3d5, 0x2b, 0xff, 0x00);
  1231. r44  = 0x34; r45  = 0x2a; r46  = 0x09; r47  = 0x00; 
  1232. boutb(4, 0x2c, 0x3d4, 0x3d5);
  1233.  
  1234. rmwb(0x3d4, 0x3d5, 0x31, 0x87, 0x00);
  1235. rmwb(0x3d4, 0x3d5, 0x32, 0x74, 0x00);
  1236. rmwb(0x3d4, 0x3d5, 0x33, 0x61, 0x00);
  1237. r54  = 0x00; r55  = 0x00; r56  = 0x00; r57  = 0x00; 
  1238. boutb(4, 0x36, 0x3d4, 0x3d5);
  1239.  
  1240. rmwb(0x3d4, 0x3d5, 0x3a, 0x02, 0x80);
  1241. rmwb(0x3d4, 0x3d5, 0x3c, 0x3f, 0x80);
  1242. rmwb(0x3d4, 0x3d5, 0x3e, 0xa7, 0x00);
  1243. /*
  1244.  *    Set Attribute Registers
  1245.  */
  1246.  
  1247. r0   = 0x00; r1   = 0x01; r2   = 0x02; r3   = 0x03; r4   = 0x04;
  1248. r5   = 0x05; r6   = 0x14; r7   = 0x07; r8   = 0x38; r9   = 0x39;
  1249. r10  = 0x3a; r11  = 0x3b; r12  = 0x3c; r13  = 0x3d; r14  = 0x3e;
  1250. r15  = 0x3f; r16  = 0x01; r17  = 0x00; r18  = 0x0f; r19  = 0x00;
  1251. boutb(20, 0x00, 0x3c0, 0x3c1);
  1252.  
  1253. /*
  1254.  *    Set GDC Registers
  1255.  */
  1256.  
  1257. r0   = 0x00; r1   = 0x00; r2   = 0x00; r3   = 0x00; r4   = 0x00;
  1258. r5   = 0x00; r6   = 0x05; r7   = 0x0f; r8   = 0xff; r9   = 0x00;
  1259. r10  = 0x00; 
  1260. boutb(11, 0x00, 0x3ce, 0x3cf);
  1261.  
  1262. rmwb(0x3ce, 0x3cf, 0x0b, 0x00, 0xc5);
  1263. rmwb(0x3ce, 0x3cf, 0x0c, 0x01, 0x00);
  1264. r13  = 0x00; 
  1265. boutb(1, 0x0d, 0x3ce, 0x3cf);
  1266.  
  1267. rmwb(0x3ce, 0x3cf, 0x0e, 0x60, 0x00);
  1268. r16  = 0x00; r17  = 0x00; r18  = 0x00; r19  = 0x00; 
  1269. boutb(4, 0x10, 0x3ce, 0x3cf);
  1270.  
  1271. r21  = 0x00; r22  = 0x05; 
  1272. boutb(2, 0x15, 0x3ce, 0x3cf);
  1273.  
  1274. outw(0x23c0, 0x2000);
  1275. wait(0x23c2, 0x0800, 0x1, 0x64, 0x0);
  1276. outw(0x23c0, 0x0000);
  1277. /*
  1278.  *    Set Other Registers
  1279.  */
  1280.  
  1281. outw(0x23c2, 0x0000);
  1282. outw(0x23c0, 0x0001);
  1283. outw(0x23c2, 0x0104);
  1284. outw(0x23c2, 0x1010);
  1285. outw(0x23c2, 0x2033);
  1286. outw(0x23c2, 0x3078);
  1287. outw(0x23c2, 0x4dce);
  1288. outw(0x23c2, 0x5031);
  1289. outw(0x23c2, 0x6003);
  1290. outw(0x23c2, 0x704f);
  1291. outw(0x23c2, 0x8400);
  1292. outw(0x23c2, 0x9300);
  1293. outw(0x23c2, 0xa041);
  1294. outw(0x23c2, 0xb022);
  1295. outw(0x23c2, 0xc0ff);
  1296. outw(0x23c2, 0xd080);
  1297. outw(0x23c2, 0xe0ff);
  1298. outw(0x23c0, 0x0102);
  1299. outw(0x23c2, 0x1000);
  1300. outw(0x23c2, 0x2000);
  1301. outw(0x23c2, 0x3000);
  1302. outw(0x23c2, 0x4000);
  1303. outw(0x23c2, 0x5000);
  1304. outw(0x23c2, 0x67c0);
  1305. outw(0x23c2, 0x7000);
  1306. outw(0x23c2, 0x8000);
  1307. outw(0x23c0, 0x0002);
  1308. outw(0x23c2, 0x0a00);
  1309. outw(0x23c8, 0x0000);
  1310. outw(0x23ca, 0x0000);
  1311. outw(0x23cc, 0x0000);
  1312. /*
  1313.  *    Set Miscellaneous Output Register
  1314.  */
  1315.  
  1316. outb(0x3c2, 0x2f);
  1317.  
  1318.  
  1319. [comment]
  1320.     Graphics Mode: 1024 x 768 x 256 colors.
  1321.  
  1322. [ModeInfo]
  1323.         ModeAttributes   = 0x18
  1324.         BytesPerScanLine = 128
  1325.         XResolution      = 1024
  1326.         YResolution      = 768
  1327.         TextRows         = 48
  1328.         BitsPerPixel     = 8
  1329.         NumberOfPlanes   = 1
  1330.         PageLength       = 786432
  1331.         SaveSize         = 786432
  1332.         TotalMemory      = 1048576
  1333.         InterlaceMode    = 0
  1334.         BufferAddress    = 0x0a0000
  1335.  
  1336. [TrapRegs]
  1337.     0x3c2;
  1338.     0x3c4, 0x00-0x04, 0x06-0x09, 0x10-0x12, 0x20-0x29, 0x31-0x36;
  1339.     0x3c5;
  1340.     0x3d4, 0x00-0x18, 0x29-0x2f, 0x31-0x33, 0x35-0x3a, 0x3c-0x3c, 0x3e-0x3e;
  1341.     0x3d5;
  1342.     0x3c0, 0x00-0x13;
  1343.     0x3c1;
  1344.     0x3ce, 0x00-0x13, 0x15-0x16;
  1345.     0x3cf;
  1346.     0x23c0;
  1347.     0x23c2;
  1348.     0x23c8;
  1349.     0x23ca;
  1350.     0x23cc;
  1351.     0x3b4;
  1352.     0x3b5;
  1353.  
  1354. [SetMode]
  1355.  
  1356. /*
  1357.  *    Set Miscellaneous Output Register
  1358.  */
  1359.  
  1360. outb(0x3c2, 0x23);
  1361.  
  1362.  
  1363. /*
  1364.  *    Set Sequencer Registers
  1365.  */
  1366.  
  1367. r0   = 0x00; r1   = 0x01; r2   = 0x0f; r3   = 0x03; r4   = 0x0e;
  1368. boutb(5, 0x00, 0x3c4, 0x3c5);
  1369.  
  1370. outw(0x3c4, 0x0300);
  1371. r7   = 0x09; r8   = 0x00; r9   = 0x00; 
  1372. boutb(3, 0x07, 0x3c4, 0x3c5);
  1373.  
  1374. rmwb(0x3c4, 0x3c5, 0x10, 0x20, 0xc1);
  1375. r17  = 0x65; r18  = 0x00; 
  1376. boutb(2, 0x11, 0x3c4, 0x3c5);
  1377.  
  1378. r32  = 0x00; 
  1379. boutb(1, 0x20, 0x3c4, 0x3c5);
  1380.  
  1381. rmwb(0x3c4, 0x3c5, 0x21, 0x07, 0x00);
  1382. r34  = 0x00; r35  = 0x00; r36  = 0xa0; r37  = 0x00; r38  = 0x00;
  1383. r39  = 0x00; r40  = 0x00; 
  1384. boutb(7, 0x22, 0x3c4, 0x3c5);
  1385.  
  1386. rmwb(0x3c4, 0x3c5, 0x29, 0x04, 0x00);
  1387. rmwb(0x3c4, 0x3c5, 0x31, 0x00, 0x14);
  1388. rmwb(0x3c4, 0x3c5, 0x32, 0xff, 0x00);
  1389. r51  = 0x00; r52  = 0x00; 
  1390. boutb(2, 0x33, 0x3c4, 0x3c5);
  1391.  
  1392. r54  = 0x00; 
  1393. boutb(1, 0x36, 0x3c4, 0x3c5);
  1394.  
  1395. /*
  1396.  *    Set CRT Registers
  1397.  */
  1398.  
  1399. outw(0x3d4, 0x0e11);
  1400. r0   = 0x99; r1   = 0x7f; r2   = 0x80; r3   = 0x9c; r4   = 0x81;
  1401. r5   = 0x17; r6   = 0x97; r7   = 0x1f; r8   = 0x00; r9   = 0x40;
  1402. r10  = 0x00; r11  = 0x00; r12  = 0x00; r13  = 0x00; r14  = 0x00;
  1403. r15  = 0x00; r16  = 0x7f; r17  = 0x83; r18  = 0x7f; r19  = 0x80;
  1404. r20  = 0x40; r21  = 0x7f; r22  = 0x96; r23  = 0xe3; r24  = 0xff;
  1405. boutb(25, 0x00, 0x3d4, 0x3d5);
  1406.  
  1407. rmwb(0x3d4, 0x3d5, 0x2a, 0x05, 0x90);
  1408. rmwb(0x3d4, 0x3d5, 0x2b, 0xff, 0x00);
  1409. r44  = 0x34; r45  = 0x2a; r46  = 0x49; r47  = 0x00; 
  1410. boutb(4, 0x2c, 0x3d4, 0x3d5);
  1411.  
  1412. rmwb(0x3d4, 0x3d5, 0x31, 0x87, 0x00);
  1413. rmwb(0x3d4, 0x3d5, 0x32, 0x74, 0x00);
  1414. rmwb(0x3d4, 0x3d5, 0x33, 0x61, 0x00);
  1415. r54  = 0x00; r55  = 0x00; r56  = 0x00; r57  = 0x00; 
  1416. boutb(4, 0x36, 0x3d4, 0x3d5);
  1417.  
  1418. rmwb(0x3d4, 0x3d5, 0x3a, 0x02, 0x80);
  1419. rmwb(0x3d4, 0x3d5, 0x3c, 0x3f, 0x80);
  1420. rmwb(0x3d4, 0x3d5, 0x3e, 0xa7, 0x00);
  1421. /*
  1422.  *    Set Attribute Registers
  1423.  */
  1424.  
  1425. r0   = 0x00; r1   = 0x01; r2   = 0x02; r3   = 0x03; r4   = 0x04;
  1426. r5   = 0x05; r6   = 0x06; r7   = 0x07; r8   = 0x08; r9   = 0x09;
  1427. r10  = 0x0a; r11  = 0x0b; r12  = 0x0c; r13  = 0x0d; r14  = 0x0e;
  1428. r15  = 0x0f; r16  = 0x41; r17  = 0x00; r18  = 0x0f; r19  = 0x00;
  1429. boutb(20, 0x00, 0x3c0, 0x3c1);
  1430.  
  1431. /*
  1432.  *    Set GDC Registers
  1433.  */
  1434.  
  1435. r0   = 0x00; r1   = 0x00; r2   = 0x00; r3   = 0x00; r4   = 0x00;
  1436. r5   = 0x40; r6   = 0x05; r7   = 0x0f; r8   = 0xff; r9   = 0x00;
  1437. r10  = 0x00; 
  1438. boutb(11, 0x00, 0x3ce, 0x3cf);
  1439.  
  1440. rmwb(0x3ce, 0x3cf, 0x0b, 0x00, 0xc5);
  1441. rmwb(0x3ce, 0x3cf, 0x0c, 0x01, 0x00);
  1442. r13  = 0x00; 
  1443. boutb(1, 0x0d, 0x3ce, 0x3cf);
  1444.  
  1445. rmwb(0x3ce, 0x3cf, 0x0e, 0x60, 0x01);
  1446. r16  = 0x00; r17  = 0x00; r18  = 0x00; r19  = 0x00; 
  1447. boutb(4, 0x10, 0x3ce, 0x3cf);
  1448.  
  1449. r21  = 0x40; r22  = 0x05; 
  1450. boutb(2, 0x15, 0x3ce, 0x3cf);
  1451.  
  1452. outw(0x23c0, 0x2000);
  1453. wait(0x23c2, 0x0800, 0x1, 0x64, 0x0);
  1454. outw(0x23c0, 0x0000);
  1455. /*
  1456.  *    Set Other Registers
  1457.  */
  1458.  
  1459. outw(0x23c2, 0x0000);
  1460. outw(0x23c0, 0x0001);
  1461. outw(0x23c2, 0x0104);
  1462. outw(0x23c2, 0x1010);
  1463. outw(0x23c2, 0x2033);
  1464. outw(0x23c2, 0x3078);
  1465. outw(0x23c2, 0x4dce);
  1466. outw(0x23c2, 0x5031);
  1467. outw(0x23c2, 0x6003);
  1468. outw(0x23c2, 0x704f);
  1469. outw(0x23c2, 0x8400);
  1470. outw(0x23c2, 0x9300);
  1471. outw(0x23c2, 0xa041);
  1472. outw(0x23c2, 0xb022);
  1473. outw(0x23c2, 0xc0ff);
  1474. outw(0x23c2, 0xd080);
  1475. outw(0x23c2, 0xe0ff);
  1476. outw(0x23c0, 0x0102);
  1477. outw(0x23c2, 0x1000);
  1478. outw(0x23c2, 0x2000);
  1479. outw(0x23c2, 0x3000);
  1480. outw(0x23c2, 0x4000);
  1481. outw(0x23c2, 0x5000);
  1482. outw(0x23c2, 0x67c0);
  1483. outw(0x23c2, 0x7000);
  1484. outw(0x23c2, 0x8000);
  1485. outw(0x23c0, 0x0002);
  1486. outw(0x23c2, 0x0a00);
  1487. outw(0x23c8, 0x0000);
  1488. outw(0x23ca, 0x0000);
  1489. outw(0x23cc, 0x0000);
  1490. /*
  1491.  *    Set Miscellaneous Output Register
  1492.  */
  1493.  
  1494. outb(0x3c2, 0x2f);
  1495.  
  1496.  
  1497. [comment]
  1498.     Text Mode: 132 cols, 25 rows.
  1499.  
  1500. [ModeInfo]
  1501.         ModeAttributes   = 0x08
  1502.         BytesPerScanLine = 132
  1503.         XResolution      = 1188
  1504.         YResolution      = 400
  1505.         XCharSize        = 9
  1506.         YCharSize        = 16
  1507.         TextRows         = 25
  1508.         BitsPerPixel     = 4
  1509.         NumberOfPlanes   = 1
  1510.         PageLength       = 6600
  1511.         SaveSize         = 6600
  1512.         TotalMemory      = 1048576
  1513.         InterlaceMode    = 0
  1514.         BufferAddress    = 0x0b8000
  1515.  
  1516. [TrapRegs]
  1517.     0x3c2;
  1518.     0x3c4, 0x00-0x04, 0x06-0x09, 0x10-0x12, 0x20-0x29, 0x31-0x36;
  1519.     0x3c5;
  1520.     0x3d4, 0x00-0x18, 0x29-0x2f, 0x31-0x33, 0x35-0x3a, 0x3c-0x3c, 0x3e-0x3e;
  1521.     0x3d5;
  1522.     0x3c0, 0x00-0x13;
  1523.     0x3c1;
  1524.     0x3ce, 0x00-0x13, 0x15-0x16;
  1525.     0x3cf;
  1526.     0x23c0;
  1527.     0x23c2;
  1528.     0x23c8;
  1529.     0x23ca;
  1530.     0x23cc;
  1531.     0x3b4;
  1532.     0x3b5;
  1533.  
  1534. [SetMode]
  1535.  
  1536. /*
  1537.  *    Set Miscellaneous Output Register
  1538.  */
  1539.  
  1540. outb(0x3c2, 0x63);
  1541.  
  1542.  
  1543. /*
  1544.  *    Set Sequencer Registers
  1545.  */
  1546.  
  1547. r0   = 0x00; r1   = 0x00; r2   = 0x03; r3   = 0x00; r4   = 0x02;
  1548. boutb(5, 0x00, 0x3c4, 0x3c5);
  1549.  
  1550. outw(0x3c4, 0x0300);
  1551. r7   = 0x09; r8   = 0x00; r9   = 0x00; 
  1552. boutb(3, 0x07, 0x3c4, 0x3c5);
  1553.  
  1554. rmwb(0x3c4, 0x3c5, 0x10, 0x20, 0xc1);
  1555. r17  = 0x65; r18  = 0x00; 
  1556. boutb(2, 0x11, 0x3c4, 0x3c5);
  1557.  
  1558. r32  = 0x00; 
  1559. boutb(1, 0x20, 0x3c4, 0x3c5);
  1560.  
  1561. rmwb(0x3c4, 0x3c5, 0x21, 0x07, 0x00);
  1562. r34  = 0x00; r35  = 0x00; r36  = 0xa0; r37  = 0x00; r38  = 0x00;
  1563. r39  = 0x00; r40  = 0x00; 
  1564. boutb(7, 0x22, 0x3c4, 0x3c5);
  1565.  
  1566. rmwb(0x3c4, 0x3c5, 0x29, 0x04, 0x00);
  1567. rmwb(0x3c4, 0x3c5, 0x31, 0x00, 0x14);
  1568. rmwb(0x3c4, 0x3c5, 0x32, 0xff, 0x00);
  1569. r51  = 0x00; r52  = 0x00; 
  1570. boutb(2, 0x33, 0x3c4, 0x3c5);
  1571.  
  1572. r54  = 0x00; 
  1573. boutb(1, 0x36, 0x3c4, 0x3c5);
  1574.  
  1575. /*
  1576.  *    Set CRT Registers
  1577.  */
  1578.  
  1579. outw(0x3d4, 0x0e11);
  1580. r0   = 0x9c; r1   = 0x83; r2   = 0x84; r3   = 0x9f; r4   = 0x8a;
  1581. r5   = 0x1c; r6   = 0xbf; r7   = 0x1f; r8   = 0x00; r9   = 0x4f;
  1582. r10  = 0x0d; r11  = 0x0e; r12  = 0x00; r13  = 0x00; r14  = 0x00;
  1583. r15  = 0x00; r16  = 0x9c; r17  = 0x8e; r18  = 0x8f; r19  = 0x42;
  1584. r20  = 0x1f; r21  = 0x96; r22  = 0xb9; r23  = 0xa3; r24  = 0xff;
  1585. boutb(25, 0x00, 0x3d4, 0x3d5);
  1586.  
  1587. rmwb(0x3d4, 0x3d5, 0x2a, 0x05, 0x90);
  1588. rmwb(0x3d4, 0x3d5, 0x2b, 0xff, 0x00);
  1589. r44  = 0x00; r45  = 0x00; r46  = 0x04; r47  = 0x00; 
  1590. boutb(4, 0x2c, 0x3d4, 0x3d5);
  1591.  
  1592. rmwb(0x3d4, 0x3d5, 0x31, 0x87, 0x00);
  1593. rmwb(0x3d4, 0x3d5, 0x32, 0x74, 0x00);
  1594. rmwb(0x3d4, 0x3d5, 0x33, 0x61, 0x00);
  1595. r54  = 0x00; r55  = 0x00; r56  = 0x00; r57  = 0x00; 
  1596. boutb(4, 0x36, 0x3d4, 0x3d5);
  1597.  
  1598. rmwb(0x3d4, 0x3d5, 0x3a, 0x02, 0x80);
  1599. rmwb(0x3d4, 0x3d5, 0x3c, 0x3f, 0x80);
  1600. rmwb(0x3d4, 0x3d5, 0x3e, 0xa7, 0x00);
  1601. /*
  1602.  *    Set Attribute Registers
  1603.  */
  1604.  
  1605. r0   = 0x00; r1   = 0x01; r2   = 0x02; r3   = 0x03; r4   = 0x04;
  1606. r5   = 0x05; r6   = 0x14; r7   = 0x07; r8   = 0x38; r9   = 0x39;
  1607. r10  = 0x3a; r11  = 0x3b; r12  = 0x3c; r13  = 0x3d; r14  = 0x3e;
  1608. r15  = 0x3f; r16  = 0x0c; r17  = 0x00; r18  = 0x0f; r19  = 0x08;
  1609. boutb(20, 0x00, 0x3c0, 0x3c1);
  1610.  
  1611. /*
  1612.  *    Set GDC Registers
  1613.  */
  1614.  
  1615. r0   = 0x00; r1   = 0x00; r2   = 0x00; r3   = 0x00; r4   = 0x00;
  1616. r5   = 0x10; r6   = 0x0e; r7   = 0x00; r8   = 0xff; r9   = 0x00;
  1617. r10  = 0x00; 
  1618. boutb(11, 0x00, 0x3ce, 0x3cf);
  1619.  
  1620. rmwb(0x3ce, 0x3cf, 0x0b, 0x00, 0xc5);
  1621. rmwb(0x3ce, 0x3cf, 0x0c, 0x01, 0x00);
  1622. r13  = 0x00; 
  1623. boutb(1, 0x0d, 0x3ce, 0x3cf);
  1624.  
  1625. rmwb(0x3ce, 0x3cf, 0x0e, 0x60, 0x00);
  1626. r16  = 0x00; r17  = 0x00; r18  = 0x00; r19  = 0x00; 
  1627. boutb(4, 0x10, 0x3ce, 0x3cf);
  1628.  
  1629. r21  = 0x10; r22  = 0x0e; 
  1630. boutb(2, 0x15, 0x3ce, 0x3cf);
  1631.  
  1632. outw(0x23c0, 0x2000);
  1633. wait(0x23c2, 0x0800, 0x1, 0x64, 0x0);
  1634. outw(0x23c0, 0x0000);
  1635. /*
  1636.  *    Set Other Registers
  1637.  */
  1638.  
  1639. outw(0x23c2, 0x0000);
  1640. outw(0x23c0, 0x0001);
  1641. outw(0x23c2, 0x0104);
  1642. outw(0x23c2, 0x1010);
  1643. outw(0x23c2, 0x2033);
  1644. outw(0x23c2, 0x3078);
  1645. outw(0x23c2, 0x4dce);
  1646. outw(0x23c2, 0x5031);
  1647. outw(0x23c2, 0x6003);
  1648. outw(0x23c2, 0x704f);
  1649. outw(0x23c2, 0x8400);
  1650. outw(0x23c2, 0x9300);
  1651. outw(0x23c2, 0xa041);
  1652. outw(0x23c2, 0xb022);
  1653. outw(0x23c2, 0xc0ff);
  1654. outw(0x23c2, 0xd080);
  1655. outw(0x23c2, 0xe0ff);
  1656. outw(0x23c0, 0x0102);
  1657. outw(0x23c2, 0x1000);
  1658. outw(0x23c2, 0x2000);
  1659. outw(0x23c2, 0x3000);
  1660. outw(0x23c2, 0x4000);
  1661. outw(0x23c2, 0x5000);
  1662. outw(0x23c2, 0x67c0);
  1663. outw(0x23c2, 0x7000);
  1664. outw(0x23c2, 0x8000);
  1665. outw(0x23c0, 0x0002);
  1666. outw(0x23c2, 0x0a00);
  1667. outw(0x23c8, 0x0000);
  1668. outw(0x23ca, 0x0000);
  1669. outw(0x23cc, 0x0000);
  1670. /*
  1671.  *    Set Miscellaneous Output Register
  1672.  */
  1673.  
  1674. outb(0x3c2, 0x6f);
  1675.  
  1676.  
  1677. [comment]
  1678.     Text Mode: 132 cols, 44 rows.
  1679.  
  1680. [ModeInfo]
  1681.         ModeAttributes   = 0x08
  1682.         BytesPerScanLine = 132
  1683.         XResolution      = 1188
  1684.         YResolution      = 396
  1685.         XCharSize        = 9
  1686.         YCharSize        = 9
  1687.         TextRows         = 44
  1688.         BitsPerPixel     = 4
  1689.         NumberOfPlanes   = 1
  1690.         PageLength       = 11616
  1691.         SaveSize         = 11616
  1692.         TotalMemory      = 1048576
  1693.         InterlaceMode    = 0
  1694.         BufferAddress    = 0x0b8000
  1695.  
  1696. [TrapRegs]
  1697.     0x3c2;
  1698.     0x3c4, 0x00-0x04, 0x06-0x09, 0x10-0x12, 0x20-0x29, 0x31-0x36;
  1699.     0x3c5;
  1700.     0x3d4, 0x00-0x18, 0x29-0x2f, 0x31-0x33, 0x35-0x3a, 0x3c-0x3c, 0x3e-0x3e;
  1701.     0x3d5;
  1702.     0x3c0, 0x00-0x13;
  1703.     0x3c1;
  1704.     0x3ce, 0x00-0x13, 0x15-0x16;
  1705.     0x3cf;
  1706.     0x23c0;
  1707.     0x23c2;
  1708.     0x23c8;
  1709.     0x23ca;
  1710.     0x23cc;
  1711.     0x3b4;
  1712.     0x3b5;
  1713.  
  1714. [SetMode]
  1715.  
  1716. /*
  1717.  *    Set Miscellaneous Output Register
  1718.  */
  1719.  
  1720. outb(0x3c2, 0x63);
  1721.  
  1722.  
  1723. /*
  1724.  *    Set Sequencer Registers
  1725.  */
  1726.  
  1727. r0   = 0x00; r1   = 0x00; r2   = 0x03; r3   = 0x00; r4   = 0x02;
  1728. boutb(5, 0x00, 0x3c4, 0x3c5);
  1729.  
  1730. outw(0x3c4, 0x0300);
  1731. r7   = 0x09; r8   = 0x00; r9   = 0x00; 
  1732. boutb(3, 0x07, 0x3c4, 0x3c5);
  1733.  
  1734. rmwb(0x3c4, 0x3c5, 0x10, 0x20, 0xc1);
  1735. r17  = 0x65; r18  = 0x00; 
  1736. boutb(2, 0x11, 0x3c4, 0x3c5);
  1737.  
  1738. r32  = 0x00; 
  1739. boutb(1, 0x20, 0x3c4, 0x3c5);
  1740.  
  1741. rmwb(0x3c4, 0x3c5, 0x21, 0x07, 0x00);
  1742. r34  = 0x00; r35  = 0x00; r36  = 0xa0; r37  = 0x00; r38  = 0x00;
  1743. r39  = 0x00; r40  = 0x00; 
  1744. boutb(7, 0x22, 0x3c4, 0x3c5);
  1745.  
  1746. rmwb(0x3c4, 0x3c5, 0x29, 0x04, 0x00);
  1747. rmwb(0x3c4, 0x3c5, 0x31, 0x00, 0x14);
  1748. rmwb(0x3c4, 0x3c5, 0x32, 0xff, 0x00);
  1749. r51  = 0x00; r52  = 0x00; 
  1750. boutb(2, 0x33, 0x3c4, 0x3c5);
  1751.  
  1752. r54  = 0x00; 
  1753. boutb(1, 0x36, 0x3c4, 0x3c5);
  1754.  
  1755. /*
  1756.  *    Set CRT Registers
  1757.  */
  1758.  
  1759. outw(0x3d4, 0x0e11);
  1760. r0   = 0x9c; r1   = 0x83; r2   = 0x84; r3   = 0x9f; r4   = 0x8a;
  1761. r5   = 0x1c; r6   = 0xbf; r7   = 0x1f; r8   = 0x00; r9   = 0x48;
  1762. r10  = 0x07; r11  = 0x08; r12  = 0x00; r13  = 0x00; r14  = 0x00;
  1763. r15  = 0x00; r16  = 0x96; r17  = 0x88; r18  = 0x82; r19  = 0x42;
  1764. r20  = 0x1f; r21  = 0x89; r22  = 0xb9; r23  = 0xa3; r24  = 0xff;
  1765. boutb(25, 0x00, 0x3d4, 0x3d5);
  1766.  
  1767. rmwb(0x3d4, 0x3d5, 0x2a, 0x05, 0x90);
  1768. rmwb(0x3d4, 0x3d5, 0x2b, 0xff, 0x00);
  1769. r44  = 0x00; r45  = 0x00; r46  = 0x04; r47  = 0x00; 
  1770. boutb(4, 0x2c, 0x3d4, 0x3d5);
  1771.  
  1772. rmwb(0x3d4, 0x3d5, 0x31, 0x87, 0x00);
  1773. rmwb(0x3d4, 0x3d5, 0x32, 0x74, 0x00);
  1774. rmwb(0x3d4, 0x3d5, 0x33, 0x61, 0x00);
  1775. r54  = 0x00; r55  = 0x00; r56  = 0x00; r57  = 0x00; 
  1776. boutb(4, 0x36, 0x3d4, 0x3d5);
  1777.  
  1778. rmwb(0x3d4, 0x3d5, 0x3a, 0x02, 0x80);
  1779. rmwb(0x3d4, 0x3d5, 0x3c, 0x3f, 0x80);
  1780. rmwb(0x3d4, 0x3d5, 0x3e, 0xa7, 0x00);
  1781. /*
  1782.  *    Set Attribute Registers
  1783.  */
  1784.  
  1785. r0   = 0x00; r1   = 0x01; r2   = 0x02; r3   = 0x03; r4   = 0x04;
  1786. r5   = 0x05; r6   = 0x14; r7   = 0x07; r8   = 0x38; r9   = 0x39;
  1787. r10  = 0x3a; r11  = 0x3b; r12  = 0x3c; r13  = 0x3d; r14  = 0x3e;
  1788. r15  = 0x3f; r16  = 0x0c; r17  = 0x00; r18  = 0x0f; r19  = 0x08;
  1789. boutb(20, 0x00, 0x3c0, 0x3c1);
  1790.  
  1791. /*
  1792.  *    Set GDC Registers
  1793.  */
  1794.  
  1795. r0   = 0x00; r1   = 0x00; r2   = 0x00; r3   = 0x00; r4   = 0x00;
  1796. r5   = 0x10; r6   = 0x0e; r7   = 0x00; r8   = 0xff; r9   = 0x00;
  1797. r10  = 0x00; 
  1798. boutb(11, 0x00, 0x3ce, 0x3cf);
  1799.  
  1800. rmwb(0x3ce, 0x3cf, 0x0b, 0x00, 0xc5);
  1801. rmwb(0x3ce, 0x3cf, 0x0c, 0x01, 0x00);
  1802. r13  = 0x00; 
  1803. boutb(1, 0x0d, 0x3ce, 0x3cf);
  1804.  
  1805. rmwb(0x3ce, 0x3cf, 0x0e, 0x60, 0x00);
  1806. r16  = 0x00; r17  = 0x00; r18  = 0x00; r19  = 0x00; 
  1807. boutb(4, 0x10, 0x3ce, 0x3cf);
  1808.  
  1809. r21  = 0x10; r22  = 0x0e; 
  1810. boutb(2, 0x15, 0x3ce, 0x3cf);
  1811.  
  1812. outw(0x23c0, 0x2000);
  1813. wait(0x23c2, 0x0800, 0x1, 0x64, 0x0);
  1814. outw(0x23c0, 0x0000);
  1815. /*
  1816.  *    Set Other Registers
  1817.  */
  1818.  
  1819. outw(0x23c2, 0x0000);
  1820. outw(0x23c0, 0x0001);
  1821. outw(0x23c2, 0x0104);
  1822. outw(0x23c2, 0x1010);
  1823. outw(0x23c2, 0x2033);
  1824. outw(0x23c2, 0x3078);
  1825. outw(0x23c2, 0x4dce);
  1826. outw(0x23c2, 0x5031);
  1827. outw(0x23c2, 0x6003);
  1828. outw(0x23c2, 0x704f);
  1829. outw(0x23c2, 0x8400);
  1830. outw(0x23c2, 0x9300);
  1831. outw(0x23c2, 0xa041);
  1832. outw(0x23c2, 0xb022);
  1833. outw(0x23c2, 0xc0ff);
  1834. outw(0x23c2, 0xd080);
  1835. outw(0x23c2, 0xe0ff);
  1836. outw(0x23c0, 0x0102);
  1837. outw(0x23c2, 0x1000);
  1838. outw(0x23c2, 0x2000);
  1839. outw(0x23c2, 0x3000);
  1840. outw(0x23c2, 0x4000);
  1841. outw(0x23c2, 0x5000);
  1842. outw(0x23c2, 0x67c0);
  1843. outw(0x23c2, 0x7000);
  1844. outw(0x23c2, 0x8000);
  1845. outw(0x23c0, 0x0002);
  1846. outw(0x23c2, 0x0a00);
  1847. outw(0x23c8, 0x0000);
  1848. outw(0x23ca, 0x0000);
  1849. outw(0x23cc, 0x0000);
  1850. /*
  1851.  *    Set Miscellaneous Output Register
  1852.  */
  1853.  
  1854. outb(0x3c2, 0x6f);
  1855.  
  1856.  
  1857.